/**
 * 穿跨越桁架焊缝计算算法模块
 * 提供桥梁跨越大腿结构中桁架焊缝强度的设计计算功能
 * 基于钢结构焊接规范进行焊缝强度验证
 */

/**
 * 穿跨越桁架焊缝计算算法类
 * 实现桁架焊缝强度计算方法，用于验证焊缝是否满足设计要求
 * 适用于桥梁跨越结构设计中的焊接节点强度分析
 */
export class CrossingTrussWeldAlgorithms {
  /**
   * 桁架焊缝强度计算
   * 根据焊缝的尺寸参数、材料强度和承受的轴向力，计算焊缝中的应力并验证是否满足强度要求
   * 基于钢结构设计规范中的角焊缝强度计算公式进行计算
   * 
   * @param {number} strengthFactor 强度设计值增大系数，通常为1.22（考虑动力荷载影响）
   * @param {number} weldSize 焊脚尺寸，通常为6mm
   * @param {number} weldLength 角焊缝计算长度，通常为80mm
   * @param {number} weldStrengthValue 角焊缝强度设计值，Q235为160MPa，Q345为205MPa
   * @param {number} axialForce 轴向力，单位N
   * @returns {Object} 焊缝强度计算结果对象
   * @returns {number} return.weldStrength - 计算得到的焊缝应力 (MPa)
   * @returns {boolean} return.isValid - 是否满足强度要求
   */
  static calculateWeld(
    strengthFactor: number,
    weldSize: number,
    weldLength: number,
    weldStrengthValue: number,
    axialForce: number
  ): { 
    weldStrength: number;    // 计算得到的焊缝应力 (MPa)
    isValid: boolean;        // 是否满足强度要求
  } {
    
    // 计算角焊缝有效厚度 = 0.7 * 焊脚尺寸 (mm)
    // 0.7系数来源于角焊缝有效截面的计算
    const weldThickness = 0.7 * weldSize;
    
    // 计算焊缝应力 (MPa)
    // 公式：σ = F / (βf * he * lw)
    // F - 轴向力(N)
    // βf - 强度设计值增大系数
    // he - 焊缝有效厚度(mm)
    // lw - 焊缝计算长度(mm)
    // 注意：1MPa = 1N/mm²，单位已统一
    const weldStress = axialForce / (strengthFactor * weldThickness * weldLength);
    
    // 判断焊缝是否满足强度要求
    // 计算得到的应力不应超过焊缝强度设计值
    const isValid = weldStress <= weldStrengthValue;
    
    // 返回计算结果，应力值保留两位小数
    return {
      weldStrength: parseFloat(weldStress.toFixed(2)),
      isValid
    };
  }
}
